//package com.example.demo.util;
//
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//
//import java.nio.charset.StandardCharsets;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//import java.util.SortedMap;
//
///**
// * 哈希计算工具类，提供初始哈希和链式哈希的计算方法
// */
//@Component
//public class HashUtils1 {
//
//    @Value("${hash.secret-key}")
//    private String secretKey;
//
//    /**
//     * 计算初始哈希值（用于新记录）
//     */
//    public String calculateInitialHash(SortedMap<String, Object> coreFields) {
//        String fieldStr = convertMapToString(coreFields);
//        String content = secretKey + "|" + fieldStr;
//        return sha256(content);
//    }
//
//    /**
//     * 基于上一次哈希计算新哈希值（用于更新记录）
//     */
//    public String calculateChainHash(String previousHash, SortedMap<String, Object> coreFields) {
//        String fieldStr = convertMapToString(coreFields);
//        String content = secretKey + "|" + previousHash + "|" + fieldStr;
//        return sha256(content);
//    }
//
//    /**
//     * 将有序Map转换为字符串，确保字段顺序一致
//     */
//    private String convertMapToString(SortedMap<String, Object> map) {
//        StringBuilder sb = new StringBuilder();
//        for (String key : map.keySet()) {
//            sb.append(key).append("=").append(map.get(key)).append(";");
//        }
//        return sb.toString();
//    }
//
//    /**
//     * 使用SHA-256算法计算哈希值
//     */
//    private String sha256(String content) {
//        try {
//            MessageDigest digest = MessageDigest.getInstance("SHA-256");
//            byte[] hash = digest.digest(content.getBytes(StandardCharsets.UTF_8));
//            StringBuilder hexString = new StringBuilder();
//
//            for (byte b : hash) {
//                String hex = Integer.toHexString(0xff & b);
//                if (hex.length() == 1) hexString.append('0');
//                hexString.append(hex);
//            }
//
//            return hexString.toString();
//        } catch (NoSuchAlgorithmException e) {
//            throw new RuntimeException("SHA-256 algorithm not found", e);
//        }
//    }
//}
